/**HEADER********************************************************************
* 
* Copyright (c) 2008 Freescale Semiconductor;
* All Rights Reserved
*
*************************************************************************** 
*
* THIS SOFTWARE IS PROVIDED BY FREESCALE "AS IS" AND ANY EXPRESSED OR 
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  
* IN NO EVENT SHALL FREESCALE OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
* THE POSSIBILITY OF SUCH DAMAGE.
*
**************************************************************************
*
* $FileName: lwgpio_mcf5208.h$
* $Version : 3.8.1.0$
* $Date    : Jul-25-2011$
*
* Comments:
*
*   The file contains definitions used in user program and/or in other
*   kernel modules to access GPIO pins
*
*END************************************************************************/
#ifndef __lwgpio_mcf5208_h__
#define __lwgpio_mcf5208_h__ 1

#define LWGPIO_PIN_VALID (0x80000000) /* Note: this is for backwards compatibility with GPIO driver only */

/* Pin field definitions */
#define LWGPIO_PIN_SHIFT (0)
#define LWGPIO_PIN_MASK (0x7 << LWGPIO_PIN_SHIFT)

#define LWGPIO_PIN(x) (((x) << LWGPIO_PIN_SHIFT) & LWGPIO_PIN_MASK)

/* Port field definitions */
#define LWGPIO_PORT_SHIFT  (3)
#define LWGPIO_PORT_MASK   (0xFF << LWGPIO_PORT_SHIFT)
#define LWGPIO_PORT(x)     (((x) << LWGPIO_PORT_SHIFT) & LWGPIO_PORT_MASK)
#define LWGPIO_PORT_BUSCTL (LWGPIO_PORT(0) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_BE     (LWGPIO_PORT(1) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_CS     (LWGPIO_PORT(2) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FECI2C (LWGPIO_PORT(3) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_QSPI   (LWGPIO_PORT(4) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_TIMER  (LWGPIO_PORT(5) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_UART   (LWGPIO_PORT(6) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FECH   (LWGPIO_PORT(7) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_FECL   (LWGPIO_PORT(8) | LWGPIO_PIN_VALID)
#define LWGPIO_PORT_IRQ    (LWGPIO_PORT(9) | LWGPIO_PIN_VALID)

#define LWGPIO_PIN0   (0)
#define LWGPIO_PIN1   (1)
#define LWGPIO_PIN2   (2)
#define LWGPIO_PIN3   (3)
#define LWGPIO_PIN4   (4)
#define LWGPIO_PIN5   (5)
#define LWGPIO_PIN6   (6)
#define LWGPIO_PIN7   (7)

typedef struct {
    uint_8  port_idx;
    uint_8  pinmask; /* since struct holds one pin, pinmask will have only one bit set */
    uint_32 flags;
} LWGPIO_STRUCT, _PTR_ LWGPIO_STRUCT_PTR;

#define LWGPIO_MUX_BUSCTL0_GPIO  (0)
#define LWGPIO_MUX_BUSCTL1_GPIO  (0)
#define LWGPIO_MUX_BUSCTL2_GPIO  (0)
#define LWGPIO_MUX_BUSCTL3_GPIO  (0)
#define LWGPIO_MUX_BUSCTL4_GPIO  (0)
#define LWGPIO_MUX_BUSCTL5_GPIO  (0)
#define LWGPIO_MUX_BUSCTL6_GPIO  (0)
#define LWGPIO_MUX_BUSCTL7_GPIO  (0)

#define LWGPIO_MUX_BE0_GPIO  (0)
#define LWGPIO_MUX_BE1_GPIO  (0)
#define LWGPIO_MUX_BE2_GPIO  (0)
#define LWGPIO_MUX_BE3_GPIO  (0)
#define LWGPIO_MUX_BE4_GPIO  (0)
#define LWGPIO_MUX_BE5_GPIO  (0)
#define LWGPIO_MUX_BE6_GPIO  (0)
#define LWGPIO_MUX_BE7_GPIO  (0)

#define LWGPIO_MUX_CS0_GPIO  (0)
#define LWGPIO_MUX_CS1_GPIO  (0)
#define LWGPIO_MUX_CS2_GPIO  (0)
#define LWGPIO_MUX_CS3_GPIO  (0)
#define LWGPIO_MUX_CS4_GPIO  (0)
#define LWGPIO_MUX_CS5_GPIO  (0)
#define LWGPIO_MUX_CS6_GPIO  (0)
#define LWGPIO_MUX_CS7_GPIO  (0)

#define LWGPIO_MUX_FECI2C0_GPIO  (0)
#define LWGPIO_MUX_FECI2C1_GPIO  (0)
#define LWGPIO_MUX_FECI2C2_GPIO  (0)
#define LWGPIO_MUX_FECI2C3_GPIO  (0)
#define LWGPIO_MUX_FECI2C4_GPIO  (0)
#define LWGPIO_MUX_FECI2C5_GPIO  (0)
#define LWGPIO_MUX_FECI2C6_GPIO  (0)
#define LWGPIO_MUX_FECI2C7_GPIO  (0)

#define LWGPIO_MUX_QSPI0_GPIO  (0)
#define LWGPIO_MUX_QSPI1_GPIO  (0)
#define LWGPIO_MUX_QSPI2_GPIO  (0)
#define LWGPIO_MUX_QSPI3_GPIO  (0)
#define LWGPIO_MUX_QSPI4_GPIO  (0)
#define LWGPIO_MUX_QSPI5_GPIO  (0)
#define LWGPIO_MUX_QSPI6_GPIO  (0)
#define LWGPIO_MUX_QSPI7_GPIO  (0)

#define LWGPIO_MUX_TIMER0_GPIO  (0)
#define LWGPIO_MUX_TIMER1_GPIO  (0)
#define LWGPIO_MUX_TIMER2_GPIO  (0)
#define LWGPIO_MUX_TIMER3_GPIO  (0)
#define LWGPIO_MUX_TIMER4_GPIO  (0)
#define LWGPIO_MUX_TIMER5_GPIO  (0)
#define LWGPIO_MUX_TIMER6_GPIO  (0)
#define LWGPIO_MUX_TIMER7_GPIO  (0)

#define LWGPIO_MUX_UART0_GPIO  (0)
#define LWGPIO_MUX_UART1_GPIO  (0)
#define LWGPIO_MUX_UART2_GPIO  (0)
#define LWGPIO_MUX_UART3_GPIO  (0)
#define LWGPIO_MUX_UART4_GPIO  (0)
#define LWGPIO_MUX_UART5_GPIO  (0)
#define LWGPIO_MUX_UART6_GPIO  (0)
#define LWGPIO_MUX_UART7_GPIO  (0)

#define LWGPIO_MUX_FECH0_GPIO  (0)
#define LWGPIO_MUX_FECH1_GPIO  (0)
#define LWGPIO_MUX_FECH2_GPIO  (0)
#define LWGPIO_MUX_FECH3_GPIO  (0)
#define LWGPIO_MUX_FECH5_GPIO  (0)
#define LWGPIO_MUX_FECH6_GPIO  (0)
#define LWGPIO_MUX_FECH7_GPIO  (0)

#define LWGPIO_MUX_FECL0_GPIO  (0)
#define LWGPIO_MUX_FECL1_GPIO  (0)
#define LWGPIO_MUX_FECL2_GPIO  (0)
#define LWGPIO_MUX_FECL3_GPIO  (0)
#define LWGPIO_MUX_FECL5_GPIO  (0)
#define LWGPIO_MUX_FECL6_GPIO  (0)
#define LWGPIO_MUX_FECL7_GPIO  (0)

#endif /*__lwgpio_mcf520_h__*/
